package com.danjinwulian.iot;

import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.iotexplorer.v20190423.IotexplorerClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * 腾讯云物联网开发平台API客户端封装
 * 专注于使用API接口进行产品和设备管理
 * 
 * @author ken.h
 */
@Component
public class TencentIotClient {

    @Value("${tencent.secretId}")
    private String secretId;
    
    @Value("${tencent.secretKey}")
    private String secretKey;
    
    @Value("${tencent.region}")
    private String region;

    /**
     * 获取腾讯云物联网开发平台API客户端
     * 
     * @return IotexplorerClient 客户端实例
     * @throws TencentCloudSDKException SDK异常
     */
    public IotexplorerClient getClient() throws TencentCloudSDKException {
        // 实例化一个认证对象，入参需要传入腾讯云账户 SecretId 和 SecretKey
        Credential cred = new Credential(secretId, secretKey);
        
        // 实例化一个http选项，可选的，没有特殊需求可以跳过
        HttpProfile httpProfile = new HttpProfile();
        httpProfile.setEndpoint("iotexplorer.tencentcloudapi.com");
        
        // 实例化一个client选项，可选的，没有特殊需求可以跳过
        ClientProfile clientProfile = new ClientProfile();
        clientProfile.setHttpProfile(httpProfile);
        
        // 实例化要请求产品的client对象，clientProfile是可选的
        return new IotexplorerClient(cred, region, clientProfile);
    }

    /**
     * 获取指定区域的API客户端
     * 
     * @param regionId 区域ID
     * @return IotexplorerClient 客户端实例
     * @throws TencentCloudSDKException SDK异常
     */
    public IotexplorerClient getClient(String regionId) throws TencentCloudSDKException {
        // 实例化一个认证对象，入参需要传入腾讯云账户 SecretId 和 SecretKey
        Credential cred = new Credential(secretId, secretKey);
        
        // 实例化一个http选项，可选的，没有特殊需求可以跳过
        HttpProfile httpProfile = new HttpProfile();
        httpProfile.setEndpoint("iotexplorer.tencentcloudapi.com");
        
        // 实例化一个client选项，可选的，没有特殊需求可以跳过
        ClientProfile clientProfile = new ClientProfile();
        clientProfile.setHttpProfile(httpProfile);
        
        // 实例化要请求产品的client对象，clientProfile是可选的
        return new IotexplorerClient(cred, regionId, clientProfile);
    }
}
